home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / netscape / applet / DefaultEmbeddedOwner.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  8.7 KB  |  431 lines

  1. package netscape.applet;
  2.  
  3. import java.awt.Component;
  4. import java.lang.reflect.InvocationTargetException;
  5. import java.lang.reflect.Method;
  6. import netscape.application.BezelBorder;
  7. import netscape.application.Bitmap;
  8. import netscape.application.Border;
  9. import netscape.application.Color;
  10. import netscape.application.Font;
  11. import netscape.application.Image;
  12. import netscape.application.Rect;
  13. import netscape.application.ScrollGroup;
  14. import netscape.application.Sound;
  15. import netscape.application.View;
  16. import netscape.util.Enumeration;
  17.  
  18. class DefaultEmbeddedOwner implements EmbeddedBeanOwner, EmbeddedProgramOwner {
  19.    public void embeddedBeanDidInit(EmbeddedBeanTracker var1) {
  20.       String var2 = var1.className();
  21.       Object var3 = this.objectFor(var1, var2);
  22.       if (var3 != null) {
  23.          if (var3 instanceof Component && !(var3 instanceof EmbeddedAppletFrame)) {
  24.             this.embedComponent(var1, var3, var3.getClass());
  25.          } else if (var3 instanceof View) {
  26.             this.embedView(var1, var3, var3.getClass());
  27.          } else {
  28.             System.err.println("Error: " + var2 + " is not derived from View or Component.");
  29.          }
  30.       }
  31.    }
  32.  
  33.    public void embeddedBeanDidStart(EmbeddedBeanTracker var1) {
  34.    }
  35.  
  36.    public void embeddedBeanDidStop(EmbeddedBeanTracker var1) {
  37.    }
  38.  
  39.    public void embeddedBeanDidDestroy(EmbeddedBeanTracker var1) {
  40.    }
  41.  
  42.    public void programDidInit(EmbeddedProgramTracker var1) {
  43.    }
  44.  
  45.    public boolean programCanShutdown(EmbeddedProgramTracker var1) {
  46.       return true;
  47.    }
  48.  
  49.    void embedView(EmbeddedBeanTracker var1, Object var2, Class var3) {
  50.       View var4 = (View)var2;
  51.       ScrollGroup var5 = null;
  52.       boolean var6 = "true".equalsIgnoreCase(var1.parameter("View Has Vertical Scroll Bar"));
  53.       boolean var7 = "true".equalsIgnoreCase(var1.parameter("View Has Horizontal Scroll Bar"));
  54.       if (!var6 && !var7) {
  55.          var4.setBounds(var1.bounds());
  56.       } else {
  57.          var5 = new ScrollGroup();
  58.          ((View)var5).setBounds(var1.bounds());
  59.          if (var6) {
  60.             var5.setHasVertScrollBar(true);
  61.          }
  62.  
  63.          if (var7) {
  64.             var5.setHasHorizScrollBar(true);
  65.          }
  66.  
  67.          var5.setContentView(var4);
  68.          Rect var8 = var5.scrollView().bounds();
  69.          var4.setBounds(0, 0, var8.width, var8.height);
  70.       }
  71.  
  72.       Enumeration var15 = var1.parameterKeys();
  73.       Enumeration var9 = var1.parameterValues();
  74.  
  75.       while(var15.hasMoreElements() && var9.hasMoreElements()) {
  76.          String var10 = (String)var15.nextElement();
  77.          String var11 = (String)var9.nextElement();
  78.          Object var13 = var2;
  79.  
  80.          int var12;
  81.          while((var12 = var10.indexOf(46)) != -1) {
  82.             String var14 = var10.substring(0, var12);
  83.             if (var10.length() == var12 + 1) {
  84.                var10 = "";
  85.             } else {
  86.                var10 = var10.substring(var12 + 1);
  87.                var13 = this.getSubObject(var1, var13, var13.getClass(), var14);
  88.                if (var13 == null) {
  89.                   var10 = "";
  90.                }
  91.             }
  92.          }
  93.  
  94.          if (var13 != var2 && var13 != null) {
  95.             this.setObjectValue(var1, var13, var13.getClass(), var10, var11);
  96.          }
  97.       }
  98.  
  99.       this.setObjectValues(var1, var2, var3);
  100.       if (var5 != null) {
  101.          var1.rootView().addSubview(var5);
  102.       } else {
  103.          var1.rootView().addSubview(var4);
  104.       }
  105.  
  106.       var4.setDirty(true);
  107.       var1.setActualObject(var4);
  108.    }
  109.  
  110.    void embedComponent(EmbeddedBeanTracker var1, Object var2, Class var3) {
  111.       Component var4 = (Component)var2;
  112.       Rect var5 = var1.bounds();
  113.       var4.reshape(var5.x, var5.y, var5.width, var5.height);
  114.       Enumeration var6 = var1.parameterKeys();
  115.       Enumeration var7 = var1.parameterValues();
  116.  
  117.       while(var6.hasMoreElements() && var7.hasMoreElements()) {
  118.          String var8 = (String)var6.nextElement();
  119.          String var9 = (String)var7.nextElement();
  120.          Object var11 = var2;
  121.  
  122.          int var10;
  123.          while((var10 = var8.indexOf(46)) != -1) {
  124.             String var12 = var8.substring(0, var10);
  125.             if (var8.length() == var10 + 1) {
  126.                var8 = "";
  127.             } else {
  128.                var8 = var8.substring(var10 + 1);
  129.                var11 = this.getSubObject(var1, var11, var11.getClass(), var12);
  130.                if (var11 == null) {
  131.                   var8 = "";
  132.                }
  133.             }
  134.          }
  135.  
  136.          if (var11 != var2 && var11 != null) {
  137.             this.setObjectValue(var1, var11, var11.getClass(), var8, var9);
  138.          }
  139.       }
  140.  
  141.       this.setObjectValues(var1, var2, var3);
  142.       var1.frame().add(var4);
  143.       var1.setActualObject(var4);
  144.    }
  145.  
  146.    Object getSubObject(EmbeddedBeanTracker var1, Object var2, Class var3, String var4) {
  147.       Object var5 = null;
  148.       Method[] var6 = var3.getMethods();
  149.  
  150.       for(int var7 = 0; var7 < var6.length; ++var7) {
  151.          String var8 = var6[var7].getName();
  152.          if (var8.equalsIgnoreCase(var4) || var8.equalsIgnoreCase("get" + var4)) {
  153.             if (var6[var7].getParameterTypes().length == 0 && !var6[var7].getReturnType().isPrimitive()) {
  154.                try {
  155.                   var5 = var6[var7].invoke(var2, (Object[])null);
  156.                } catch (NullPointerException var9) {
  157.                } catch (IllegalArgumentException var10) {
  158.                } catch (IllegalAccessException var11) {
  159.                } catch (InvocationTargetException var12) {
  160.                }
  161.             }
  162.             break;
  163.          }
  164.       }
  165.  
  166.       return var5;
  167.    }
  168.  
  169.    void setObjectValue(EmbeddedBeanTracker var1, Object var2, Class var3, String var4, String var5) {
  170.       Method[] var6 = var3.getMethods();
  171.  
  172.       for(int var7 = 0; var7 < var6.length; ++var7) {
  173.          String var8 = var6[var7].getName();
  174.          if (var8.length() > 3 && var8.substring(0, 3).equalsIgnoreCase("set") && var8.substring(3).equalsIgnoreCase(var4)) {
  175.             Class[] var9 = var6[var7].getParameterTypes();
  176.             if (var9.length == 1) {
  177.                Object[] var10 = new Object[1];
  178.                boolean var11 = false;
  179.                if (var5.equals("null")) {
  180.                   var10[0] = null;
  181.                   var11 = true;
  182.                } else {
  183.                   var10[0] = this.getParameterValue(var1, var9[0], var5);
  184.                }
  185.  
  186.                if (var11 || var10[0] != null) {
  187.                   try {
  188.                      var6[var7].invoke(var2, var10);
  189.                   } catch (NullPointerException var12) {
  190.                   } catch (IllegalArgumentException var13) {
  191.                   } catch (IllegalAccessException var14) {
  192.                   } catch (InvocationTargetException var15) {
  193.                   }
  194.                }
  195.             }
  196.          }
  197.       }
  198.  
  199.    }
  200.  
  201.    void setObjectValues(EmbeddedBeanTracker var1, Object var2, Class var3) {
  202.       Method[] var4 = var3.getMethods();
  203.  
  204.       for(int var5 = 0; var5 < var4.length; ++var5) {
  205.          String var6 = var4[var5].getName();
  206.          if (var6.length() > 3 && var6.substring(0, 3).equalsIgnoreCase("set")) {
  207.             String var7 = var6.substring(3);
  208.             String var8 = var1.parameter(var7);
  209.             if (var8 != null) {
  210.                Class[] var9 = var4[var5].getParameterTypes();
  211.                if (var9.length == 1) {
  212.                   Object[] var10 = new Object[1];
  213.                   boolean var11 = false;
  214.                   if (var8.equals("null")) {
  215.                      var10[0] = null;
  216.                      var11 = true;
  217.                   } else {
  218.                      var10[0] = this.getParameterValue(var1, var9[0], var8);
  219.                   }
  220.  
  221.                   if (var11 || var10[0] != null) {
  222.                      try {
  223.                         var4[var5].invoke(var2, var10);
  224.                      } catch (NullPointerException var12) {
  225.                      } catch (IllegalArgumentException var13) {
  226.                      } catch (IllegalAccessException var14) {
  227.                      } catch (InvocationTargetException var15) {
  228.                      }
  229.                   }
  230.                }
  231.             }
  232.          }
  233.       }
  234.  
  235.    }
  236.  
  237.    Object objectFor(EmbeddedBeanTracker var1, String var2) {
  238.       if (var2.length() > 16 && var2.substring(0, 16).equals("netscape.applet.")) {
  239.          System.err.println("Illegal attemp to load class from netscape.applet");
  240.          return null;
  241.       } else {
  242.          Class var3;
  243.          try {
  244.             var3 = var1.eop.task.loadClass(var2);
  245.          } catch (ClassNotFoundException var9) {
  246.             System.err.println(((Throwable)var9).toString());
  247.             return null;
  248.          } catch (IllegalArgumentException var10) {
  249.             System.err.println(((Throwable)var10).toString());
  250.             return null;
  251.          }
  252.  
  253.          try {
  254.             Object var4 = var3.newInstance();
  255.             return var4;
  256.          } catch (InstantiationException var6) {
  257.             System.err.println(((Throwable)var6).toString());
  258.             return null;
  259.          } catch (IllegalAccessException var7) {
  260.             System.err.println(((Throwable)var7).toString());
  261.             return null;
  262.          } catch (NoSuchMethodError var8) {
  263.             System.err.println(((Throwable)var8).toString());
  264.             System.err.println("   Class does not have default constructor: " + var2);
  265.             return null;
  266.          }
  267.       }
  268.    }
  269.  
  270.    Font fontFor(String var1) {
  271.       Font var2 = Font.fontNamed(var1);
  272.       if (var2 == null) {
  273.          var2 = Font.defaultFont();
  274.       }
  275.  
  276.       return var2;
  277.    }
  278.  
  279.    Color colorFor(String var1) {
  280.       Color var2 = null;
  281.       if ("red".equalsIgnoreCase(var1)) {
  282.          var2 = Color.red;
  283.       } else if ("green".equalsIgnoreCase(var1)) {
  284.          var2 = Color.green;
  285.       } else if ("blue".equalsIgnoreCase(var1)) {
  286.          var2 = Color.blue;
  287.       } else if ("cyan".equalsIgnoreCase(var1)) {
  288.          var2 = Color.cyan;
  289.       } else if ("magenta".equalsIgnoreCase(var1)) {
  290.          var2 = Color.magenta;
  291.       } else if ("yellow".equalsIgnoreCase(var1)) {
  292.          var2 = Color.yellow;
  293.       } else if ("orange".equalsIgnoreCase(var1)) {
  294.          var2 = Color.orange;
  295.       } else if ("pink".equalsIgnoreCase(var1)) {
  296.          var2 = Color.pink;
  297.       } else if ("white".equalsIgnoreCase(var1)) {
  298.          var2 = Color.white;
  299.       } else if ("lightGray".equalsIgnoreCase(var1)) {
  300.          var2 = Color.lightGray;
  301.       } else if ("gray".equalsIgnoreCase(var1)) {
  302.          var2 = Color.gray;
  303.       } else if ("darkGray".equalsIgnoreCase(var1)) {
  304.          var2 = Color.darkGray;
  305.       } else if ("black".equalsIgnoreCase(var1)) {
  306.          var2 = Color.black;
  307.       }
  308.  
  309.       if (var2 == null) {
  310.          try {
  311.             if (var1.charAt(0) == '#' && var1.length() > 1) {
  312.                var1 = var1.substring(1);
  313.             }
  314.  
  315.             int var3 = Integer.parseInt(var1, 16);
  316.             var2 = new Color(var3);
  317.          } catch (NumberFormatException var4) {
  318.          }
  319.       }
  320.  
  321.       if (var2 == null) {
  322.          var2 = Color.white;
  323.       }
  324.  
  325.       return var2;
  326.    }
  327.  
  328.    Image imageFor(String var1) {
  329.       Bitmap var2 = Bitmap.bitmapNamed(var1);
  330.       return var2;
  331.    }
  332.  
  333.    Sound soundFor(String var1) {
  334.       Sound var2 = Sound.soundNamed(var1);
  335.       return var2;
  336.    }
  337.  
  338.    Border borderFor(EmbeddedBeanTracker var1, String var2) {
  339.       Border var3 = null;
  340.       if ("raisedBezel".equalsIgnoreCase(var2)) {
  341.          var3 = BezelBorder.raisedBezel();
  342.       } else if ("loweredBezel".equalsIgnoreCase(var2)) {
  343.          var3 = BezelBorder.loweredBezel();
  344.       } else if ("groovedBezel".equalsIgnoreCase(var2)) {
  345.          var3 = BezelBorder.groovedBezel();
  346.       } else if ("raisedButtonBezel".equalsIgnoreCase(var2)) {
  347.          var3 = BezelBorder.raisedButtonBezel();
  348.       } else if ("loweredButtonBezel".equalsIgnoreCase(var2)) {
  349.          var3 = BezelBorder.loweredButtonBezel();
  350.       }
  351.  
  352.       if (var3 == null) {
  353.          Object var4 = this.objectFor(var1, var2);
  354.          if (var4 instanceof Border) {
  355.             var3 = (Border)var4;
  356.          }
  357.       }
  358.  
  359.       return var3;
  360.    }
  361.  
  362.    Object getParameterValue(EmbeddedBeanTracker var1, Class var2, String var3) {
  363.       Object var4 = null;
  364.       if (var2.isPrimitive()) {
  365.          if (var2 == Boolean.TYPE) {
  366.             var4 = new Boolean(var3);
  367.          } else if (var2 == Character.TYPE) {
  368.             var4 = new Character(var3.charAt(0));
  369.          } else if (var2 == Byte.TYPE) {
  370.             try {
  371.                var4 = new Byte(var3);
  372.             } catch (NumberFormatException var11) {
  373.                var4 = new Byte((byte)0);
  374.             }
  375.          } else if (var2 == Short.TYPE) {
  376.             try {
  377.                var4 = new Short(var3);
  378.             } catch (NumberFormatException var10) {
  379.                var4 = new Short((short)0);
  380.             }
  381.          } else if (var2 == Integer.TYPE) {
  382.             try {
  383.                var4 = new Integer(var3);
  384.             } catch (NumberFormatException var9) {
  385.                var4 = new Integer(0);
  386.             }
  387.          } else if (var2 == Long.TYPE) {
  388.             try {
  389.                var4 = new Long(var3);
  390.             } catch (NumberFormatException var8) {
  391.                var4 = new Long(0L);
  392.             }
  393.          } else if (var2 == Float.TYPE) {
  394.             try {
  395.                var4 = new Float(var3);
  396.             } catch (NumberFormatException var7) {
  397.                var4 = new Float((double)0.0F);
  398.             }
  399.          } else if (var2 == Double.TYPE) {
  400.             try {
  401.                var4 = new Double(var3);
  402.             } catch (NumberFormatException var6) {
  403.                var4 = new Double((double)0.0F);
  404.             }
  405.          }
  406.       } else {
  407.          String var5 = var2.getName();
  408.          if (var5.equals("java.lang.String")) {
  409.             var4 = var3;
  410.          } else if (var5.equals("netscape.application.Font")) {
  411.             var4 = this.fontFor(var3);
  412.          } else if (var5.equals("netscape.application.Color")) {
  413.             var4 = this.colorFor(var3);
  414.          } else if (var5.equals("netscape.application.Image")) {
  415.             var4 = this.imageFor(var3);
  416.          } else if (var5.equals("netscape.application.Sound")) {
  417.             var4 = this.soundFor(var3);
  418.          } else if (var5.equals("netscape.application.Border")) {
  419.             var4 = this.borderFor(var1, var3);
  420.          } else {
  421.             var4 = this.objectFor(var1, var3);
  422.             if (var4 != null && var4.getClass() != var2) {
  423.                var4 = null;
  424.             }
  425.          }
  426.       }
  427.  
  428.       return var4;
  429.    }
  430. }
  431.